<?php
namespace app\admin\controller;
use think\Controller;
use think\Db;
use think\Url;
use think\Request;

class Goodscate extends Controller
{
    /*
     * @显示分类页面
     */
    public function index()
    {
        // 接收查询数据
        $pid = empty($_GET['pid'])?0:$_GET['pid'];

        // 查询数据
        $data = db('goods_category')->field(['id', 'category_name', 'pid', 'level'])->select();

        // return view('admin/goodscate/index', [
        //     'title'=>'Showing - 后台商品分类',
        //     'data'=>$data
        // ]);
        $data = goodstree($data);

        $this->assign([
            'title'=>'Showing - 后台商品分类',
            'data'=>$data,

            ]);

        return $this->fetch('admin/goods_cate');
    }


    public function create()
    {
        /**
         * 添加分类显示
         */
        $data = db('goods_category')->field(['id', 'category_name', 'pid', 'level'])->select();

        $data = goodstree($data);

        $this->assign([
            'title'=>'Showing - 后台商品分类添加',
            'data'=>$data
        ]);
        return $this->fetch('admin/goods_cate_create');
    }


    public function insert()
    {
        /**
         * @添加分类
         */
        $data = input('post.');
        // var_dump($data['pid']);
        $result = db('goods_category')->where('id', $data['pid'])->find();
        $level = $result['level'];
        $level += 1;
        $data['level'] = $level;
        // var_dump($data);
        $cate = db('goods_category')->insert($data);
        if ($cate > 0){
            return $this->success('操作成功',  url('admin/goodscate/index'));
        } else {
            return $this->error('操作失败',  url('admin/goodscate/create'));
        }

    }

    public function edit($id)
    {
        // 查询分类信息
        $thecate = Db::name('goods_category')->field(['id', 'category_name', 'pid', 'level'])->find($id);
        $parentcate = Db::name('goods_category')->field(['id', 'pid', 'category_name', 'level'])->where('id', $thecate['pid'])->find();

        $data = db('goods_category')->field(['id', 'category_name', 'pid', 'level'])->select();
        $data = goodstree($data);

        // var_dump($thecate, $parentcate);
        return view('admin/goods_cate_edit', [
            'title'=>'分类编辑',
            'thecate'=>$thecate,
            'parentcate'=>$parentcate,
            'data'=>$data
        ]);
    }

    
    public function update($id)
    {
        $data = input('post.');

        // 当前分类属性
        $catedata = Db::name('goods_category')->where('id', $id)->find();
        // 当前分类的子类
        $soncate = Db::name('goods_category')->where('pid', $id)->select();
        // 查询其父分类
        $result = Db::name('goods_category')->where('id', $data['pid'])->find();
        // 父分类等级
        $level = $result['level'];
        // +1 变 子分类等级
        $level += 1;
        $data['level'] = $level;
        // 没有 修改 点 确定 时的判断
        if ($data['level']==$catedata['level'] && $data['category_name']==$catedata['category_name']){
            return $this->success('修改成功',  url('admin/goodscate/index'));
        }
        // 判断是否 把 本分类 加入到 自己分类 下
        if ($data['pid']==$catedata['id']){

            echo "<script>alert('无法把本分类[加入]本分类')</script>";
            // header("location:admin/goodscate/edit");
            return $this->error('修改失败');
        }
        // 判断 当前 分类pid 是否等于 父类id, 并且分类下是否有 子分类
        if ($catedata['pid']!= $result['id'] && !empty($soncate)){
            echo "<script>alert('有[子分类]无法修改分类')</script>";
            return $this->error('修改失败');
        }

        $cate = Db::name('goods_category')->where('id', $id)->update($data);
        if ($cate) {
            return $this->success('修改成功',  url('admin/goodscate/index'));
        } else {
           return $this->error('修改失败');
       };

    }


    public function delete($id)
    {
        // var_dump($id);
        // $soncate = db('goods_category')->where('pid', $id)->select();
        // // var_dump($soncate);
        // if (!empty($soncate)){
        //     echo "<script>alert('有[子分类]无法[删除]！！');</script>";
        //     return $this->error('删除失败');
        // }
        // $data = Db::name('goods_category')->where('id', $id)->delete();

        // if ($data) {
        //     return $this->success('删除成功',  url('admin/goodscate/index'));
        // } else {
        //     return $this->error('删除失败');
        // };


        // JS 做法
        // var_dump($id);
        $soncate = db('goods_category')->where('pid', $id)->select();
        // var_dump($soncate);
        if (!empty($soncate)){
            return;
        }

        $result = Db::name('goods_category')->delete($id);
        if ($result){
            $info['status'] = true;
            $info['id'] = $id;
            $info['info'] = $id.'分类删除成功';
        } else {
            $info['status'] = false;
            $info['id'] = $id;
            $info['info'] = $id.'分类删除失败';
        }
        return json($info);
        // var_dump($result);
    }
    
}